package com.ssy.lingxi.product.service.platform;

import com.ssy.lingxi.common.model.dto.UserLoginCacheDTO;
import com.ssy.lingxi.common.response.PageData;
import com.ssy.lingxi.common.response.Wrapper;
import com.ssy.lingxi.product.model.dto.platform.PlatformMaterialProcessMemberDTO;
import com.ssy.lingxi.product.model.request.platform.*;
import com.ssy.lingxi.product.model.resp.platform.PlatformBaseMaterialProcessVO;
import com.ssy.lingxi.product.model.resp.platform.PlatformMaterialProcessDetailVO;
import com.ssy.lingxi.product.model.resp.platform.PlatformMaterialProcessPageQueryVO;

import java.util.List;

/**
 * 平台后台 - 物料流程配置 服务接口
 * @author 彭冬冬
 * @version 2.0.0
 * @date 2022/3/25 14:13
 */
public interface IPlatformMaterialProcessService {
    /**
     * 分页查询物料流程规则配置
     * @param sysUser HttpHeaders信息
     * @param pageVO 接口参数
     * @return 查询结果
     */
    Wrapper<PageData<PlatformMaterialProcessPageQueryVO>> pageMaterialProcess(UserLoginCacheDTO sysUser, PlatformMaterialProcessPageVO pageVO);

    /**
     * 新增物料规则页面 - 查询基础物料流程列表
     * @param sysUser Http头部信息
     * @return 查询结果
     */
    Wrapper<List<PlatformBaseMaterialProcessVO>> listBaseMaterialProcess(UserLoginCacheDTO sysUser);

    /**
     * 新增物料流程规则
     * @param sysUser HttpHeaders信息
     * @param saveVO 接口参数
     * @return 新增结果
     */
    Wrapper<Void> save(UserLoginCacheDTO sysUser, PlatformMaterialProcessVO saveVO);

    /**
     * 查询物料流程规则详情
     * @param sysUser HttpHeaders信息
     * @param processId 物料流程id， 必传且要大于0
     * @return 查询结果
     */
    Wrapper<PlatformMaterialProcessDetailVO> getInfo(UserLoginCacheDTO sysUser, Long processId);

    /**
     * 分页查询物料流程规则适用会员列表
     * @param sysUser HttpHeaders信息
     * @param pageVO  接口参数
     * @return 查询结果
     */
    Wrapper<List<PlatformMaterialProcessMemberDTO>> listMaterialProcessMembers(UserLoginCacheDTO sysUser, PlatformMaterialProcessMemberPageVO pageVO);

    /**
     * 修改物料流程规则
     * @param sysUser HttpHeaders信息
     * @param updateVO 接口参数
     * @return 修改结果
     */
    Wrapper<Void> update(UserLoginCacheDTO sysUser, PlatformMaterialProcessUpdateVO updateVO);

    /**
     * 修改物料流程规则状态
     * @param sysUser HttpHeaders信息
     * @param updateStatusVO 接口参数
     * @return 修改结果
     */
    Wrapper<Void> updateStatus(UserLoginCacheDTO sysUser, PlatformMaterialProcessUpdateStatusVO updateStatusVO);

    /**
     * 删交物料流程规则
     * @param sysUser HttpHeaders信息
     * @param processId 物料流程规则配置id
     * @return 删除结果
     */
    Wrapper<Void> delete(UserLoginCacheDTO sysUser, Long processId);
}
